/*
Vuex 的核心管理对象模块
 */
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
//状态对象
const state={
    count:0
}
//包含多个对应事件回调函数的对象
const actions={
    handleAdd ({commit},walknum) {
        commit('addcount',walknum)
    },
    handleJian({commit}){
        commit('decount')
    },
    // 带条件的commit执行
    handleAddOdd({commit,state}){
        if(state.count%2==0){
            commit('addcount')
        }
    },
    // 异步的commit执行
    handleAddAsync({commit}){
        setTimeout( () => {
            commit('addcount')
        },1000)
    }
}
//包含多个更新state函数的对象
const mutations={
    addcount (state,data) {
        if(!data){
            data=1;
        }
        state.count=state.count+data;
    },
    decount (state) {
        state.count--
    }
}
//包含多个getter计算属性
const getters={
    evebOrOdd (state) {
        return state.count%2==0?'偶数':'奇数';
    }
}
export default new Vuex.Store({
    state,  //状态对象
    actions, //包含多个对应事件回调函数的对象
    mutations, //包含多个更新state函数的对象
    getters  //包含多个getter计算属性
})
